package com.tl.spider.utils.dedicated_utils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.tl.spider.constant.TaskLevelEnum;
import com.tl.spider.pojo.UrlTaskPojo;
import com.tl.spider.utils.common_utils.FileUtil;

/**
 * 爬虫种子生成器
 * 
 * @date 2021年7月16日
 * @author Antg
 */
public class SeedGeneratorUtil {
	/**
	 * 专门针对中国青年网新闻的种子生成器
	 * 
	 * @param num
	 *            生成种子的数量
	 * @return String[]
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static String[] seedGenerator4news_youth_cn(int num) {
		String[] result = new String[num];
		result[0] = "http://news.youth.cn/gn/index.htm";
		for (int i = 1; i < num; i++) {
			result[i] = "http://news.youth.cn/gn/index_" + i + ".htm";
		}
		return result;
	}

	/**
	 * 获取配置文件中的种子
	 * 
	 * @param filePath
	 *            配置文件路径
	 * @param charset
	 *            字符编码
	 * @param num
	 *            要获取的数量
	 * @return List<String>
	 * @throws IOException
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static List<String> getSeedBySeedFile(String filePath,
			String charset, int num) throws IOException {
		List<String> list = FileUtil.getListWithLine(filePath, charset, num);
		return list;
	}

	/**
	 * 获取配置文件中的种子(全部获取)
	 * 
	 * @param filePath
	 *            配置文件路径
	 * @param charset
	 *            字符编码
	 * @return List<String>
	 * @throws IOException
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static List<String> getSeedBySeedFile(String filePath, String charset)
			throws IOException {
		List<String> list = FileUtil.getListWithLine(filePath, charset);
		return list;
	}

	/**
	 * 获取对象形式的任务列表
	 * 
	 * @param filePath
	 *            种子文件路径
	 * @param charset
	 *            字符编码
	 * @return List<UrlTaskPojo> resultList
	 * @throws IOException
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static List<UrlTaskPojo> getSeedPojoList(String filePath,
			String charset) throws IOException {
		List<UrlTaskPojo> resultList = new ArrayList<UrlTaskPojo>();
		getSeedBySeedFile(filePath, charset).forEach(e -> {
			UrlTaskPojo temp = new UrlTaskPojo(e, TaskLevelEnum.ROOT);
			resultList.add(temp);
		});
		return resultList;
	}

	/**
	 * 获取对象形式的任务列表(指定数量)
	 * 
	 * @param filePath
	 *            种子文件路径
	 * @param charset
	 *            字符编码
	 * @param num
	 *            要获取的数量
	 * @return
	 * @throws IOException
	 * @date 2021年7月16日
	 * @author Antg
	 */
	public static List<UrlTaskPojo> getSeedPojoList(String filePath,
			String charset, int num) throws IOException {
		List<UrlTaskPojo> resultList = new ArrayList<UrlTaskPojo>();
		getSeedBySeedFile(filePath, charset, num).forEach(e -> {
			UrlTaskPojo temp = new UrlTaskPojo(e, TaskLevelEnum.ROOT);
			resultList.add(temp);
		});
		return resultList;
	}
}
